package com.xrh.core.annotation;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
import java.util.concurrent.TimeUnit;


/**
 * @function 拦截重复请求源码
 * @author 肖荣辉
 * @date 2023年12月21日
*/
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.RUNTIME)
public @interface RepeatRequest {

    /**
     * 默认的内置变量用户id，类型为字符串，字符串方便处理
     */
    String USER_ID = "userId";

    /**
     * 幂等的超时时间，默认为 1 秒
     * <p>
     * 注意，如果执行时间超过它，请求还是会进来
     */
    int timeout() default 1;

    /**
     * 时间单位，默认为 SECONDS 秒
     */
    TimeUnit timeUnit() default TimeUnit.SECONDS;

    /**
     * 提示信息，正在执行中的提示
     */
    String message() default "处理中，请稍后重试";

    /**
     * 是否在业务完成后删除 key true:删除 false:不删除
     */
    boolean delKey() default true;

}
